package com.cooud.order.config;

import feign.Logger;
import feign.RetryableException;
import feign.Retryer;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: DongGuoZhen
 * @Date: 2025/03/12/20:23
 * @Description:
 */
@Configuration
public class OrderConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }


    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;   // 日志全记录组件
    }


//    请求失败重试策略
    @Bean
    Retryer retryer() {
//        this(100L, TimeUnit.SECONDS.toMillis(1L), 5); 默认重试策略
//        第一次失败后等待100ms后调用第二次，如果第二次失败，则等待100ms*1.5=150ms后调用第三次，
//        如果第三次失败，则等待150ms*1.5=225ms后调用第四次，
//        如果第四次失败，则等待225ms*1.5=337.5ms后调用第五次，如果第五次失败，则不再重试
        return new Retryer.Default();   // 默认重试策略
    }
}

